Hướng dẫn sử dụng lệnh basename trong Linux
Hướng dẫn chi tiết cách sử dụng lệnh basename trong Linux cùng các ví dụ cho bạn đọc tham khảo.
basename là một tiện ích dòng lệnh (command line) dùng để lấy tên file dựa vào chuỗi đường dẫn được nhập vào. Ngoài ra, nó cũng có thể xóa luôn cả dấu gạch chéo nếu nó xuất hiện ở vị trí cuối cùng trong chuỗi mà bạn đã nhập vào.
Cú pháp lệnh basename trong Linux
Cú pháp của lệnh này trong Linux như sau:
basename NAME [SUFFIX] basename OPTION... NAME...
Lệnh basename sẽ lấy tên file và in ra thành phần cuối cùng của tên file. Nó cũng có thể được dùng để xóa các hậu tố thông qua những tùy chọn mà chúng ta sẽ tìm hiểu ở phần 2.
Ví dụ cơ bản nhất là in ra tên file bằng cách loại bỏ đi đường dẫn các thư mục mà file này đang đứng:
basename /etc/passwd
Kết quả:
passwd
Nếu chuỗi bạn truyền vào có dấu gạch chéo cuối cùng thì nó cũng xóa luôn dấu gạch chéo đó.
basename /usr/local/ basename /usr/local
Cả hai đều có kết quả là:
local local
Truyền nhiều chuỗi vào lệnh basename
Câu hỏi đặt ra là nếu ta truyền nhiều chuỗi vào lệnh basename thì chuyện gì sẽ xảy ra?
Thực tế thì lệnh basename chấp nhận nhiều đối số được truyền vào. Để làm điều này thì bạn hãy thêm tùy chọn -a(--miltiple) như sau:
basename -a /etc/passwd /etc/shadow
Kết quả:
passwd shadow
Cách gọi này chính là cách gọi rút gọn, thay vì gọi hai lần lệnh basename thì ta chỉ gọi một lần mà thôi.
Loại bỏ hậu tố của chuỗi theo yêu cầu bằng lệnh basename
Để loại bỏ hậu tố theo ý của mình thì bạn truyền vào hai tham số, trong đó tham số đầu tiên là chuỗi cần xử lý, tham số thứ hai là hậu tố muốn loại bỏ.
basename /etc/hostname name
Kết quả:
host
Nếu chạy lệnh bình thường thì nó sẽ trả về là hostname, nhưng vì ta truyền thêm tham số thứ hai là name nên trong kết quả trả về chuỗi hậu tố name cũng bị xóa.
Thông thường chúng ta dùng cách này để lấy tên file nhưng loại bỏ đi phần đuôi mở rộng.
basename /etc/sysctl.conf .conf
Kết quả:
sysctl
Một cách khác là ta se chỉ định hậu tố cần xóa với tùy chọn -s(--suffix).
basename -s .conf /etc/sysctl.conf
Kết quả:
sysctl
Với cách này bạn cũng có thể áp dụng xử lý cho nhiều chuỗi cùng lúc.
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
Kết quả:
sysctl sudo
Một ví dụ thực tế về lệnh basename trong bash script
Chúng ta sẽ viết một đoạn mã script dùng để đổi tên tất cả các file hình như sau:
for file in *.jpeg; do mv -- "$file" "$(basename $file .jpeg).jpg" done
Đoạn code trên mình dùng lệnh mv để đổi tên file từ jpeg sang jpg >>> Xem thêm về lệnh mv trong Linux TẠI ĐÂY
Như vậy là chúng ta đã tìm hiểu xong cách sử dụng lệnh basename trong Linux, đây là lệnh được sử dụng để trích xuất giá trị cuối cùng của một chuỗi theo ký tự gạch chéo.
Thông thường chúng ta sử dụng basename command để xử lý đường dẫn URL và tên file trong Linux.
Nguồn: freetuts
Mọi người cùng tìm kiếm: basename, basename linux, basename bash, bash basename, basename command in linux, basename command, basename in linux, basename shell